package cn.itsource;

import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class JedisTest {

    @Test
    public void testJedis() throws Exception {
        //创建连接
        String host = "127.0.0.1";
        //端口
        int port = 6379;
        //超时时间,1秒超时
        int timeout = 1000;
        //jedis客户端
        Jedis jedis = new Jedis(host, port, timeout);
        //认证
        jedis.auth("000000");
        //执行操作,保存值
        jedis.set("username", "武汉源码时代");
        //获取值
        String result = jedis.get("username");
        System.out.print(result);
        //关闭连接
        jedis.close();
    }

    @Test
    public void testGet(){
        //创建连接
        String host = "127.0.0.1";
        //端口
        int port = 6379;
        //超时时间,1秒超时
        int timeout = 1000;
        //jedis客户端
        Jedis jedis = new Jedis(host, port, timeout);
        //认证
        jedis.auth("000000");
        //这一次没有赋值直接取值 因为上面test执行后 值已经保存在缓存中了

        String username = jedis.get("username");
        System.out.println(username);

        jedis.close();

    }

    @Test
    public void test()throws Exception{
        //1 创建jedispool配置对象
        JedisPoolConfig config = new JedisPoolConfig();
        //2 做配置
        //最大空闲连接数
        config.setMaxIdle(2);
        //最大连接对象数
        config.setMaxTotal(10);
        //链接超时时间
        config.setMaxWaitMillis(1*1000);
        //获取连接是测试连接是否畅通
        config.setTestOnBorrow(true);
        //3 创建jedispool连接池对戏
        //参数：配置对象，redis主机地址 ，超时时间，密码
        JedisPool pool = new JedisPool(config,"127.0.0.1",6379,1*1000,"123456");
        //4 通过jedispool获取连接
        Jedis jedis = pool.getResource();
        //5 执行操作
        jedis.set("age","10");
        String result = jedis.get("age");
        System.out.println(result);
        // 6 释放连接 , 底层做了兼容,如果是连接池操作就是释放,如果是连接操作就是关闭
        jedis.close();
        // 7 摧毁连接池-如果是真正项目中它应该是一个受spring管理的单例
        pool.destroy();
    }



}
